// 对axios 做二次封装
// 1.基地址+最长等待时间
// 2.请求&响应拦截器

import axios from "axios";
import {message} from 'antd'
import {getToken,removeToken} from './storage'
import history  from "@/utils/history"

const instance=axios.create({
    // baseURL: 'http://geek.itheima.net/v1_0/', // 基地址
     baseURL: 'http://toutiao.itheima.net/v1_0',
    timeout:1000, // 最长等待时间1秒。如果一个请求超过了5秒还没有返回，就认定失败
})

//请求拦截器
instance.interceptors.request.use(
    function(config) {
        // 如果有token，就带上
        const token=getToken()
        if(token) {
            // 在请求头中补充一个字段
            config.headers.Authorization=`Bearer ${token}`
        }
        return config
    },
    function(error) {
        return Promise.reject(error)
    }
)

// 响应拦截器
instance.interceptors.response.use(
    function (response) {
       return response.data
    },
    function (error) {
         console.dir(error);
        if(!error.response) {
            // console.log(message.error('网络超时'));
            return message.error('网络超时')
        }
        if(error.response.status===401) {
            //提示用户
            message.error('凭证过期,请重新登录')
            // 清空token
            removeToken()
            // 回到登录页
            // window.location.href='/login'  // 导致页面刷新
            // history.push('/login')
            history.push('/login',{from:history.location.pathname})  
        }
        return Promise.reject(error)
    }
)

export default instance